import java.util.Arrays;

public class largestNumber {
    public String largestNumber(int[] nums) {
        //贪心，尽可能让大数字靠前，尽可能让小数字靠后
        //字典序可以省去拆开每个数位作比较的过程
        String[] strs = new String[nums.length];
        for (int i = 0; i < nums.length; i++) {
            strs[i] = String.valueOf(nums[i]);
        }
        /*这段代码对字符串数组 strs 进行自定义排序，目的是将数字拼接后形成最大的数。 具体功能如下：
        使用贪心策略，比较两个数字字符串 a 和 b 的不同拼接顺序 (b+a) 和 (a+b) 的大小；
        若 (b+a) 更大，则 b 应该排在 a 前面；
        最终拼接所有字符串得到最大数。
        * */
        //compareTo 是 Java 中 String 类的一个方法，用于比较两个字符串的字典序（Lexicographical Order）
        Arrays.sort(strs, (a, b) -> (b + a).compareTo(a + b));
        StringBuilder res = new StringBuilder();
        for (String s : strs) {
            res.append(s);
        }
        return res.charAt(0) == '0' ? "0" : res.toString();
    }
}
